# -*-coding:utf-8-*-

# Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.

# Do not allocate extra space for another array, you must do this in place with constant memory.

# For example,
# Given input array nums = [1,1,2],

# Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively. It doesn't matter what you leave beyond the new length.


# python version: Python 3

__Author = 'BONFY'


class Solution(object):
    def removeDuplicates(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        if not nums:
            return 0
        n = len(nums)
        count = curr = 1
        while count < n:
            if nums[curr] != nums[curr-1]:
                curr += 1
            else:
                del nums[curr]
            count += 1
        return curr

if __name__ == '__main__':
    print(Solution().removeDuplicates([1, 1, 2, 2, 3, 3, 4, 4, 5]))
